---
title: Device
description: A universal library provides access to system information about the physical device.
sourceCodeUrl: 'https://github.com/expo/expo/tree/main/packages/expo-device'
packageName: 'expo-device'
iconUrl: '/static/images/packages/expo-device.png'
platforms: ['android', 'ios', 'tvos', 'web']
---

import APISection from '~/components/plugins/APISection';
import { APIInstallSection } from '~/components/plugins/InstallSection';
import { SnackInline } from '~/ui/components/Snippet';

`expo-device` provides access to system information about the physical device, such as its manufacturer and model.

## Installation

<APIInstallSection />

## Usage

<SnackInline label='Basic Device Usage' dependencies={['expo-device']}>

```jsx
import { Text, View } from 'react-native';
import * as Device from 'expo-device';

export default function App() {
  return (
    <View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
      <Text>
        {Device.manufacturer}: {Device.modelName}
      </Text>
    </View>
  );
}
```

</SnackInline>

## API

```js
import * as Device from 'expo-device';
```

<APISection packageName="expo-device" apiName="Device" />

## Error codes

| Code                      | Description                                                                                                              |
| ------------------------- | ------------------------------------------------------------------------------------------------------------------------ |
| ERR_DEVICE_ROOT_DETECTION | Error code thrown for `isRootedExperimentalAsync`. This may be thrown if there's no read access to certain system files. |
